设char s[10];int i;以下正确的表达式是()

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:13:26
A.s[i+10]
B.*(s+i)
C.*(&s+i)
D.*((s++)+i)
请详细解释下!
A表示字符串数组第(i+11)号元素,----i不可以是负数吗?

选B
A表示字符串数组第(i+11)号元素,不存在
C种的s已经是表示数组的首元素的地址了,不可以在前面加取址符号
D中的只对地址不能进行自加

正确的是A,B,C。
其中D选项对s的自加操作会出现编译错误,或者说是语法错误,肯定是错的。
而A,B,C三个选项虽然没有语法错误,但是A,C不出意外地话会有运行时错,B选项出不出运行是错取决于i的值,依赖于编译器的默认初始化值。
从语法上来说,D绝对是错的,至于A,B,C,也只是没有语法错而已。